import base64
import binascii
import logging

# 配置日志记录
logging.basicConfig(level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')

def is_valid_base64(encoded_str):
    """
    检查字符串是否符合Base64编码的基本格式。

    参数:
    encoded_str (str): 需要检查的字符串。

    返回:
    bool: 如果字符串符合Base64编码的基本格式，返回True；否则返回False。
    """
    try:
        # Base64编码的字符串长度必须是4的倍数
        if len(encoded_str) % 4 != 0:
            return False
        # 尝试解码，如果成功则认为是有效的Base64编码
        base64.b64decode(encoded_str)
        return True
    except binascii.Error:
        return False

def base64_decrypt(encoded_str):
    """
    解密Base64编码的字符串并返回原始字符串。

    参数:
    encoded_str (str): 需要解密的Base64编码字符串。

    返回:
    str: 解密后的原始字符串，或解密失败时的错误消息。
    """
    if not is_valid_base64(encoded_str):
        logging.error("输入的字符串不符合Base64编码的基本格式")
        return "解码错误: 输入的字符串不符合Base64编码的基本格式"

    try:
        # 解码Base64编码的字符串
        decoded_bytes = base64.b64decode(encoded_str)
        # 将字节转换为字符串
        decoded_str = decoded_bytes.decode('utf-8')
        return decoded_str
    except binascii.Error as e:
        logging.error(f"Base64解码错误: {str(e)}")
        return f"解码错误: {str(e)}"
    except UnicodeDecodeError as e:
        logging.error(f"UTF-8解码错误: {str(e)}")
        return f"解码错误: {str(e)}"
    except Exception as e:
        logging.error(f"未知错误: {str(e)}")
        return f"解码错误: {str(e)}"

if __name__ == "__main__":
    # 输入Base64编码的字符串
    encoded_str = input("输入Base64编码的字符串: ")
    # 解密并打印结果
    print("解码后的字符串:", base64_decrypt(encoded_str))
